package com.behelpful.demo.quartz.invoker;

import com.behelpful.common.core.utils.SpringBeanUtil;
import com.behelpful.demo.quartz.entity.SystemJob;
import org.quartz.Trigger;

/**
 * 任务执行者(侧率模式)
 *
 * @author Alay
 * @date 2021-10-31 17:50
 * @since
 */
public interface ITaskInvoker {


    /**
     * 执行任务
     *
     * @param systemJob
     */
    void doInvoke(SystemJob systemJob);

    /**
     * 分配执行器执行任务任务
     *
     * @param systemJob
     * @param trigger
     */
    static void invoke(SystemJob systemJob, Trigger trigger) {
        ITaskInvoker invoker = (ITaskInvoker) SpringBeanUtil.getBeanByName(systemJob.getJobType().name());
        invoker.doInvoke(systemJob);
    }

}